home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO017.dsk / FILE.MANAGER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  10KB  |  203 lines

  1. 10  REM   FILE MANAGER 2.0
  2. 14  ONERR  GOTO 1600
  3. 15  PRINT  CHR$(4);"- COPY.OBJ0"
  4. 20  PRINT  CHR$(4);"- TYPE.OBJ0"
  5. 30  PRINT  CHR$(4);"PREFIX": INPUT PRFX$
  6. 40 OPFX$ = PRFX$
  7. 100 D$ =  CHR$(4):BELL$ =  CHR$(7): PRINT D$"PR#3"
  8. 140  DEF  FN A(X) = X -( INT((X -1)/9) *9)
  9. 150  DIM B$(51)
  10. 160  RESTORE : FOR I = 0 TO 7: READ TB(I),OP$(I): NEXT I
  11. 170  DATA      2,VIEW,7,LOCK,12,UNLOCK,19,DELETE,26,RENAME,33,COPY,38,RUN,43,QUIT
  12. 180  GOTO 5000
  13. 200  REM <CTRL-J><CTRL-J><CTRL-J>EXITS
  14. 210  ONERR  GOTO 230
  15. 220  TEXT : HOME : PRINT : PRINT D$"- " +PRFX$ +"BASIC.SYSTEM"
  16. 230  VTAB 10: PRINT "PLEASE INSERT THE " +PRFX$ +" DISK": PRINT : PRINT "THEN PRESS RETURN";
  17. 240  GET A$: IF A$ =  CHR$(13)  THEN  PRINT : GOTO 220
  18. 250  GOTO 5000:<CTRL-J><CTRL-J><CTRL-J>
  19. 300  REM  ERROR HANDLER
  20. 310  POKE 216,0:J = 1
  21. 320 R$ =  MID$ (FILE$,J,1)
  22. 330  IF R$ = " "  THEN 350
  23. 340 J = J +1: GOTO 320
  24. 350 FILE$ =  MID$ (FILE$,1,J -1) +"/"
  25. 360 PRFX$ = PRFX$ +FILE$: REM <CTRL-J><CTRL-J><CTRL-J>
  26. 370  TEXT : HOME : POKE 34,3
  27. 380  GOSUB 2000:
  28. 390  POKE 216,0
  29. 400 FILE = 1:K = 1:O =  INT((NUM +8)/9)
  30. 410  IF FILE >NUM  THEN FILE = 1
  31. 500  REM <CTRL-J><CTRL-J><CTRL-J>MAIN MENU
  32. 510 F = 0: HOME :
  33. 515 FF$ = "FILE.MANAGER 2.0              " +DRIVE$ +"     PREFIX: " +PRFX$
  34. 516 LL =  LEN(FF$): IF LL <73  THEN DRIVE$ = DRIVE$ +" ":FF$ = "": GOTO 515
  35. 520  PRINT FF$
  36. 530  VTAB 7: HTAB 18: PRINT N$: VTAB 8
  37. 540  PRINT "=========================================================================":
  38. 550  PRINT "#     PROGRAM      TYPE BLOCKS  MODIFIED         CREATED          ENDFILE<CTRL-K>"
  39. 560  PRINT "- ---------------  ---- ------  ---------------  ---------------  -------"
  40. 570  FOR J = (FILE) TO (FILE) +8
  41. 580 ::: IF J < = NUM  THEN  PRINT  FN A(J);" ";B$(J)
  42. 590  NEXT J
  43. 600  VTAB 20: HTAB 1
  44. 610  PRINT "-------------------------------------------------------------------------":
  45. 620 K =  INT(FILE/9) +2: IF K >O  THEN K = 1
  46. 630  VTAB 21: HTAB 4: INVERSE : PRINT " SELECT BY NUMBER ";: NORMAL 
  47. 635  HTAB 29: INVERSE : PRINT "RTN";: NORMAL : PRINT " FOR NEW DRIVE";
  48. 640  HTAB 52: INVERSE : PRINT "-->";: NORMAL : PRINT " SEE PAGE ";
  49. 650  PRINT K;" OF ";O
  50. 660  VTAB 21: HTAB 22: GET E$: IF E$ =  CHR$(27)  THEN 7000
  51. 665  IF E$ =  CHR$(13)  THEN 6000
  52. 670  IF E$ =  CHR$(21)  THEN FILE = FILE +9: GOTO 410
  53. 680  IF E$ <"1"  OR E$ >"9"  THEN  PRINT BELL$;: GOTO 660
  54. 690 F =  VAL(E$):G = F +FILE -1: IF G >NUM  THEN  PRINT BELL$;: GOTO 660
  55. 700  VTAB F +10: HTAB 2: INVERSE : PRINT "->": NORMAL 
  56. 710 FILE$ =  MID$ (B$(G),2,15):L = R:FULL$ = PRFX$ +FILE$
  57. 800  REM <CTRL-J><CTRL-J><CTRL-J>OPERATE ON FILE
  58. 810  IF FILE$ = "RETURN TO MENU "  THEN 7000
  59. 820 I = 0: POKE 34,20
  60. 825  VTAB 20: PRINT : CALL  -868
  61. 830  VTAB 21: NORMAL : FOR J = 0 TO 7: HTAB TB(J): PRINT OP$(J);: NEXT 
  62. 835  HTAB TB(I): INVERSE : PRINT OP$(I): NORMAL : PRINT 
  63. 840  HTAB 9: PRINT "SELECT:";: INVERSE : PRINT "<--->";: NORMAL : PRINT "  BACK: ";: INVERSE : PRINT "ESC": NORMAL 
  64. 850  WAIT  -16384,128: POKE  -16368,0:K =  PEEK(49152):
  65. 860  IF K = 21  THEN I = I +1: IF I >7  THEN I = 0: REM   RIGHT ARROW
  66. 870  IF K = 8  THEN I = I -1: IF I <0  THEN I = 7: REM    LEFT ARROW
  67. 880  IF K = 13  THEN 920
  68. 890  IF K = 27  THEN  TEXT : POKE 34,3: HOME : GOTO 400
  69. 900  GOTO 830
  70. 910  REM <CTRL-J><CTRL-J><CTRL-J>EXECUTE COMMAND
  71. 920 A = (I +1): VTAB 21: NORMAL : ON A GOTO 1000,1200,1220,1300,1400,1500,1700,1800,830
  72. 930  TEXT : HOME : POKE 34,3: HOME : GOTO 370
  73. 940  TEXT : HOME : POKE 34,3: HOME : GOTO 390:<CTRL-J><CTRL-J><CTRL-J>
  74. 1000  ONERR  GOTO 1600: REM VIEW FILE
  75. 1010  TEXT : HOME : VTAB 23
  76. 1020  PRINT D$"TYPE "FULL$: PRINT : POKE 49168,0
  77. 1030  PRINT : PRINT : VTAB 23: HTAB 7: INVERSE : PRINT "PRESS RETURN TO CONTINUE";: NORMAL 
  78. 1040  GET A$: IF A$ < > CHR$(13)  THEN 1040
  79. 1045  PRINT  CHR$(4)"PR#3"
  80. 1050  PRINT : GOTO 940:<CTRL-J><CTRL-J><CTRL-J>
  81. 1200  ONERR  GOTO 1600
  82. 1210  PRINT D$"LOCK ";FULL$: GOTO 930:<CTRL-J><CTRL-J><CTRL-J>
  83. 1220  ONERR  GOTO 1600
  84. 1230  PRINT D$;"UNLOCK";FULL$: GOTO 930:<CTRL-J><CTRL-J><CTRL-J>
  85. 1300  REM   DELETE FILE
  86. 1305  VTAB 21: CALL  -958: FLASH : PRINT "DELETE: ";: NORMAL : PRINT FILE$: PRINT "ARE YOU SURE (Y/N)";
  87. 1307  GET A$: IF A$ = "N"  OR A$ = "n"  THEN 940
  88. 1308  IF A$ < >"Y"  AND A$ < >"y"  THEN 1307
  89. 1310  ONERR  GOTO 1330
  90. 1320  PRINT D$;"DELETE";FULL$: GOTO 930
  91. 1330  POKE 216,0: PRINT : IF  PEEK(222) = 10  THEN  PRINT "FILE LOCKED! DELETE ANYWAY? (Y/N) ";: GET A$: PRINT A$: IF A$ < >"Y"  AND A$ < >"y"  THEN 940
  92. 1340  IF  PEEK(222) = 10  THEN  PRINT D$;"UNLOCK";FULL$: PRINT D$;"DELETE";FULL$: GOTO 930:
  93. 1350  GOTO 1600<CTRL-J><CTRL-J><CTRL-J>
  94. 1400  VTAB 21: CALL  -958: PRINT "NEW NAME: ----------------";: HTAB 11: INPUT B$: IF B$ = ""  THEN 940
  95. 1405  ONERR  GOTO 1415
  96. 1410  PRINT D$;"RENAME ";FULL$ +"," +PRFX$ +B$: GOTO 930
  97. 1415 ER =  PEEK(222): IF ER = 10  THEN 1430
  98. 1420  IF ER < >16  THEN 1600
  99. 1425  VTAB 21: CALL  -958: PRINT BELL$;"Invalid Filename: ";B$: PRINT "RETURN to try again, OTHER to quit";: GET A$: PRINT : IF A$ =  CHR$(13)  THEN 1400
  100. 1427  GOTO 940
  101. 1430  ONERR  GOTO 1600
  102. 1440  POKE 216,0: PRINT D$;"UNLOCK ";FULL$: PRINT D$;"RENAME ";FULL$ +"," +PRFX$ +B$: PRINT D$;"LOCK ";PRFX$;B$: GOTO 930:<CTRL-J><CTRL-J><CTRL-J>
  103. 1500  REM <CTRL-J><CTRL-J><CTRL-J>FILE COPY
  104. 1520  CALL  -958: PRINT "INSERT TARGET DISK IN DRIVE "D2" AND": PRINT "THEN PRESS RETURN TO COPY...";
  105. 1525  FOR J = 1 TO 1500: NEXT : POKE 49168,0
  106. 1530  GET A$: PRINT : IF A$ < > CHR$(13)  THEN 940
  107. 1540  ONERR  GOTO 1600
  108. 1550  PRINT D$"PREFIX/ "D2$: PRINT D$"PREFIX": INPUT P2$
  109. 1560 SAME = 0: IF PRFX$ = P2$  THEN  PRINT D$"RENAME"P2$",/TEMP/"D2$:SAME = 1:P2$ = "/TEMP/"
  110. 1570  PRINT D$"COPY "FULL$","P2$;FILE$
  111. 1580  IF SAME  THEN  PRINT D$"RENAME  /TEMP/,"PRFX$;D2$
  112. 1590  GOTO 940:<CTRL-J><CTRL-J><CTRL-J><CTRL-J>
  113. 1600  REM <CTRL-J><CTRL-J><CTRL-J>ERROR TRAP
  114. 1605 ER =  PEEK(222):LN =  PEEK(218) + PEEK(219) *256: HOME 
  115. 1610  IF LN = 15  THEN  PRINT "COPY FUNCTION IS MISSING FROM YOUR": PRINT "DISK.  WON'T WORK NOW.";: GOTO 20
  116. 1612  IF ER = 16  AND LN = 1570  THEN  PRINT "COPY FUNCTION IS MISSING FROM YOUR": PRINT "DISK.  WON'T WORK NOW.";: GOTO 1670
  117. 1613  IF ER = 16  AND LN = 1020  THEN  PRINT "TYPE FUNCTION IS MISSING FROM YOUR": PRINT "DISK.  WON'T WORK NOW.";: GOTO 1670
  118. 1615  IF LN = 20  THEN  PRINT "TYPE FUNCTION IS MISSING FROM YOUR": PRINT "DISK.  CAN'T VIEW FILE.";: GOTO 30
  119. 1620  IF ER = 6  OR ER = 8  THEN  PRINT "DISK NOT FOUND IN DRIVE ";D2;: GOTO 1670
  120. 1630  IF ER = 4  THEN  PRINT "DISK IS WRITE-PROTECTED... NOTCH IT";: GOTO 1670
  121. 1640  IF ER = 3  THEN  PRINT "THERE IS NO DRIVE ";D2;: GOTO 1670
  122. 1650  IF ER = 9  AND LN = 1570  THEN  PRINT "TARGET DISK IS FULL...COPY ABORTED<CTRL-G><CTRL-G>": GET A$: PRINT : GOTO 1580
  123. 1660  IF ER = 19  AND LN = 1570  THEN  PRINT "DUPLICATE FILE NAME ON DRIVE "D2".": PRINT "REPLACE WITH NEW?";: GET A$: IF A$ = "Y"  OR A$ = "y"  THEN  PRINT : PRINT D$"DELETE"D2$;FILE$: GOTO 1570
  124. 1665  IF ER = 19  THEN  PRINT "DUPLICATE FILE NAME...": PRINT "FUNCTION ABORTED.";: GOTO 1670
  125. 1669  POKE 216,0: RESUME 
  126. 1670  PRINT BELL$;BELL$;: GET A$: PRINT : GOTO 940
  127. 1700  REM  RUN
  128. 1705  TEXT : HOME 
  129. 1707  PRINT "- ";FULL$
  130. 1710  ONERR  GOTO 1600
  131. 1720  PRINT D$"-";FULL$: GOTO 930
  132. 1800  REM  QUIT
  133. 1810  TEXT : END 
  134. 2000  REM <CTRL-J><CTRL-J><CTRL-J>READS DIR INTO B$()
  135. 2005  VTAB 12: HTAB 33: PRINT "ANALYZING DATA"
  136. 2010  PRINT D$"PREFIX "PRFX$;D1$
  137. 2020  PRINT D$"OPEN";PRFX$",TDIR";D1$: PRINT D$"READ"PRFX$:
  138. 2030 D = 1
  139. 2040  FOR N = 1 TO 3: INPUT F$: NEXT 
  140. 2050  FOR N = 4 TO 51
  141. 2060 ::: INPUT F$: IF  LEN(F$) <5  THEN 2100
  142. 2070 ::: IF  LEFT$(F$,12) = "BLOCKS FREE:"  THEN N$ =  LEFT$(F$,40):N = 100: GOTO 2100
  143. 2080 ::: IF  MID$ (F$,17,4) = "TYPE"  OR  LEFT$(F$,1) = "/"  THEN 2100
  144. 2090 :::B$(D) =  LEFT$(F$,72):D = D +1
  145. 2100  NEXT N:
  146. 2110  PRINT D$;"CLOSE ";PRFX$:
  147. 2120 NUM = D:B$(D) = " RETURN TO MENU     "
  148. 2130  RETURN :<CTRL-J><CTRL-J><CTRL-J>
  149. 5000  REM 
  150. 5010  TEXT : HOME : POKE 216,0
  151. 5020  ONERR  GOTO 5050
  152. 5025  PRINT  CHR$(4)"VERIFY FILE.MANAGER,D1"
  153. 5027 DV$ = "1": GOTO 5070
  154. 5030  ONERR  GOTO 5060
  155. 5040  PRINT  CHR$(4)"VERIFY FILE.MANAGER,D2"
  156. 5045 DV$ = "2": GOTO 5070
  157. 5050 DV$ = "0": GOTO 5030
  158. 5060  PRINT "SORRY THERE WAS AN ERROR": END 
  159. 5070 DRIVE$ = "DRIVE " +DV$
  160. 5072  POKE 216,0
  161. 5075 A$ = DV$
  162. 5200 D1 =  VAL(A$):D1$ = ",D" +A$:A$ = "":D2 = 2: IF D1 = 2  THEN D2 = 1
  163. 5210 D2$ = ",D" + STR$(D2)
  164. 5220 DSK$ = "XXX"
  165. 5230  REM <CTRL-J><CTRL-J>GET VOLUME NAME
  166. 5300  ONERR  GOTO 5380
  167. 5310  PRINT  CHR$(4);"PREFIX/"D1$: PRINT : PRINT  CHR$(4);"PREFIX": INPUT PRFX$
  168. 5320 T =  LEN(PRFX$)
  169. 5330  REM <CTRL-J><CTRL-J>STRIP ALL BUT VOLUME NAME
  170. 5340  FOR C = 2 TO T:
  171. 5350 ::: IF  MID$ (PRFX$,C,1) = "/"  THEN C$ =  LEFT$(C$,C):C = T
  172. 5360  NEXT C
  173. 5370 : POKE 216,0: GOTO 370:<CTRL-J><CTRL-J><CTRL-J><CTRL-J>
  174. 5380 ER =  PEEK(222)
  175. 5390  IF ER = 8  OR ER = 6  THEN 5000: REM  TRY AGAIN
  176. 5395  IF ER = 3  THEN A$ = "1": GOTO 5200
  177. 5400  POKE 216,0: RESUME 
  178. 5410  POKE 216
  179. 5420  STOP 
  180. 5430  GOTO 370
  181. 6000  REM  CHANGE DRIVES
  182. 6010  IF DV$ = "1"  THEN DV$ = "2": GOTO 6040
  183. 6020  IF DV$ = "2"  THEN DV$ = "1": GOTO 6040
  184. 6030  TEXT : HOME : PRINT "SORRY, THERE WAS AN ERROR!": END 
  185. 6040  GOTO 5070
  186. 7000  REM  MENU
  187. 7010  TEXT : HOME 
  188. 7020  VTAB 5: HTAB 33: PRINT "OPTION MENU"
  189. 7030  VTAB 8: HTAB 25: PRINT "1.  RETURN TO PROGRAM"
  190. 7040  VTAB 10: HTAB 25: PRINT "2.  EXIT"
  191. 7050  VTAB 12: HTAB 25: PRINT "3.  EXIT TO BASIC.SYSTEM"
  192. 7060  VTAB 15: HTAB 21: PRINT "ENTER A NUMBER FROM 1 TO 3 AND RETURN"
  193. 7070  GET X$
  194. 7075 X =  VAL(X$)
  195. 7080  IF X <1  OR X >3  THEN  PRINT  CHR$(7): GOTO 7060
  196. 7090  ON X GOTO 7200,7400,7600
  197. 7200  GOTO 510
  198. 7400  GOTO 1800
  199. 7600  PRINT  CHR$(7) + CHR$(7)
  200. 7610  VTAB 20: PRINT "INSERT DISK " +OPFX$ +" AND PRESS RETURN ."
  201. 7620  PRINT : GET X$
  202. 7630  PRINT : PRINT D$"- " +OPFX$ +"BASIC.SYSTEM"
  203. 7900  END